<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br" lang="pt-br">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Classe Benchmarking : Guia do Usuário CodeIgniter</title>

<style type='text/css' media='all'>@import url('../userguide.css');</style>
<link rel='stylesheet' type='text/css' media='all' href='../userguide.css' />

<script type="text/javascript" src="../nav/nav.js"></script>
<script type="text/javascript" src="../nav/prototype.lite.js"></script>
<script type="text/javascript" src="../nav/moo.fx.js"></script>
<script type="text/javascript" src="../nav/user_guide_menu.js"></script>

<meta http-equiv="expires" content="-1" />
<meta http-equiv="pragma" content="no-cache" />
<meta name="robots" content="all" />
<meta name="author" content="ExpressionEngine Dev Team" />
<meta name="description" content="Guia do Usuário do CodeIgniter" />

</head>
<body>

<!-- START NAVIGATION -->
<div id="nav"><div id="nav_inner"><script type="text/javascript">create_menu('../');</script></div></div>
<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="Alternar Tabela de Conteúdos" alt="Alternar Tabela de Conteúdos" /></a></div>
<div id="masthead">
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td><h1>Guia de Usuário CodeIgniter Versão 2.0.0</h1></td>
<td id="breadcrumb_right"><a href="../toc.html">Tabela de Conteúdos</a></td>
</tr>
</table>
</div>
<!-- END NAVIGATION -->


<!-- START BREADCRUMB -->
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td id="breadcrumb">
<a href="http://codeigniter.com.br/">Página Inicial</a> › 
<a href="../index.html">Guia de Usuário CodeIgniter</a> › Classe Benchmarking
</td>
<td id="searchbox"><form method="get" action="http://www.google.com.br/search"><input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.com.br/manual/" />Busca <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" /> <input type="submit" class="submit" name="sa" value="Ok" /></form></td>
</tr>
</table>
<!-- END BREADCRUMB -->

<br clear="all" />


<!-- START CONTENT -->
<div id="content">


<h1>Classe Benchmarking</h1>

<p>O CodeIgniter tem uma Classe de Benchmarking que está sempre ativa, permitindo verificar a diferença de tempo entre
dois pontos marcados para serem calculados.</p>

<p class="important"><strong>Nota:</strong> Esta classe é inicializada automaticamente pelo sistema, então não é necessário fazer isto manualmente.</p>


<p>O benchmark sempre é iniciado no momento em que o framework é
carregado, e terminado pela classe de saída (output), assim que é enviada a visualização para o navegador, permitindo uma eficiente
verificação e exibição de tempo de execução de todo o sistema.</p>


<h3>Tabela de Conteúdos</h3>

<ul>
<li><a href="#using">Usando a classe de Benchmark</a></li>
<li><a href="#profiler">Perfil de seus Pontos de Benchmark</a></li>
<li><a href="#execution">Exibindo o Tempo Total de Execução</a></li>
<li><a href="#memory">Exibindo o Consumo de Memória</a></li>
</ul>



<a name="using"></a>
<h2>Usando a classe de Benchmark</h2>

<p>A classe de Benchmark pode ser utilizada com seus <a href="../general/controllers.html">controllers</a>, <a href="../general/views.html">views</a>, ou seus <a href="../general/models.html">models</a>. O processo de uso é: </p>

<ol>
<li>Marcar um ponto inicial</li>
<li>Marcar um ponto final</li>
<li>Chamar a função de "tempo decorrido" (elapsed_time) para visualizar os resultados</li>
</ol>

<p>Segue aqui um exemplo real de uso:</p>

<code>$this->benchmark->mark('code_start');<br />
<br />
// Algum código aqui<br />
<br />
$this->benchmark->mark('code_end');<br />
<br />
echo $this->benchmark->elapsed_time('code_start', 'code_end');</code>

<p class="important"><strong>Nota:</strong> As palavras "code_start" e "code_end" podem ser quaisquer palavras. Eles são apenas palavras para referenciar as duas marcas. Você pode
usar quaisquer palavras, e ainda usar multiplas marcas. Veja este exemplo:</p>

<code>$this->benchmark->mark('dog');<br />
<br />
// Algum código aqui<br />
<br />
$this->benchmark->mark('cat');<br />
<br />
// Mais algum código aqui<br />
<br />
$this->benchmark->mark('bird');<br />
<br />
echo $this->benchmark->elapsed_time('dog', 'cat');<br />
echo $this->benchmark->elapsed_time('cat', 'bird');<br />
echo $this->benchmark->elapsed_time('dog', 'bird');</code>


<a name="profiler"></a>
<h2>Perfil de seus Pontos de Benchmark</h2>

<p>Se você quer que os dados do benchmark estejam disponíveis na classe
<a href="../general/profiling.html">Profiler</a> suas marcas devem ser deinidas em par, e
cada marca precisa ter o sufixo <kbd>_start</kbd> e <kbd>_end</kbd>.
Cada par de marcas precisam ser nomeadas de forma identica. Por exemplo:</p>

<code>
$this->benchmark->mark('my_mark<kbd>_start</kbd>');<br />
<br />
// Algum código aqui...<br />
<br />
$this->benchmark->mark('my_mark<kbd>_end</kbd>');
<br /><br />

$this->benchmark->mark('another_mark<kbd>_start</kbd>');<br />
<br />
// Mais algum código aqui...<br />
<br />
$this->benchmark->mark('another_mark<kbd>_end</kbd>');
</code>

<p>Para mais informações leia a <a href="../general/profiling.html">página de Profiler</a>.</p>


<a name="execution"></a>
<h2>Exibindo o Tempo Total de Execução</h2>

<p>Se você pretende exibir o tempo total do momento em que o CodeIgniter iniciou até o momento em que a saída
é enviada ao navegador, coloque este código no template da sua view:</p>

<code>&lt;?php echo $this->benchmark->elapsed_time();?&gt;</code>

<p>Você pode perceber que esta é a mesma função utilizada nos exemplos acima para calcular o tempo entre duas marcas, exceto pelo fato de que você
<strong>não</strong> passou nenhum parâmetro. Quando os parâmetros são enviados, o CodeIgniter não para de calcular até o momento que a saída
é enviada ao navegador. Não importa onde você chame a função, o tempo continuará a rodar até o final.</p>

<p>Uma maneira alternativa de exibir o tempo decorrido nos seus arquivos de visualização é usando esta pseudo-variável, caso você preferir não usar o PHP:</p>
<code>{elapsed_time}</code>

<p class="important"><strong>Nota:</strong> Se você quiser verificar qualquer coisa em seus controllers,
você precisará definir suas próprias marcas de início e fim.</p>

<a name="memory"></a>
<h2>Exibindo o Consumo de Memória</h2>

<p>Se sua instalação do PHP foi configurada com o parametro --enable-memory-limit, você pode exibir a quantidade de memória consumida
pelo sistema usando o seguinte código em seus arquivos de visualização:</p>

<code>&lt;?php echo $this->benchmark->memory_usage();?&gt;</code>
<p>Nota: Esta função só pode ser usada em arquivos de visualização. O consumo será referente ao consumo total de memória usado por toda a aplicação.</p>

<p>Uma maneira alternativa de exibir o tempo decorrido nos seus arquivos de visualização é usando esta pseudo-variável, caso você preferir não usar o PHP:</p>
<code>{memory_usage}</code>




</div>
<!-- END CONTENT -->



<div id="footer">
<p>
Tópico Anterior:&nbsp;&nbsp;<a href="../doc_style/index.html">Escrevendo Documentação</a>
&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="#top">Topo da Página</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="../index.html">Guia de Usuário CodeIgniter</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
Próximo Assunto:&nbsp;&nbsp;<a href="calendar.html">Classe Calendário</a>
</p>
<p><a href="http://codeigniter.com.br">CodeIgniter</a> &nbsp;&middot;&nbsp; Copyright &#169; 2006 - 2011 &nbsp;&middot;&nbsp; <a href="http://ellislab.com/">EllisLab, Inc.</a></p>
</div>

</body>
</html>